from typing import List
from .gemini_manager import GeminiManager


class ContentGenerator:
    """内容生成器"""
    
    def __init__(self, gemini_manager: GeminiManager):
        self.gemini = gemini_manager
    
    async def generate_title(self, theme: dict) -> str:
        """生成标题"""
        prompt = self._create_title_prompt(theme)
        return await self.gemini.generate_text(prompt)
    
    async def generate_seo_description(self, theme: dict, title: str) -> str:
        """生成SEO描述"""
        prompt = self._create_seo_prompt(theme, title)
        return await self.gemini.generate_text(prompt)
    
    async def generate_prompts(self, theme: dict, count: int = 10) -> List[str]:
        """生成图片描述提示词"""
        prompt = self._create_prompts_prompt(theme, count)
        response = await self.gemini.generate_text(prompt)
        return self._parse_prompts_response(response)
    
    def _create_title_prompt(self, theme: dict) -> str:
        return f"""
        基于以下主题信息创建一个吸引人的手机壁纸标题：
        {theme}
        
        要求：
        1. 标题简洁有力
        2. 突出主题特点
        3. 具有吸引力
        """
    
    def _create_seo_prompt(self, theme: dict, title: str) -> str:
        return f"""
        为以下手机壁纸主题创建SEO优化的描述：
        主题：{theme}
        标题：{title}
        
        要求：
        1. 描述详细，包含关键词
        2. 突出壁纸特点和应用场景
        3. 优化搜索引擎收录
        4. 字数在100-200之间
        """
    
    def _create_prompts_prompt(self, theme: dict, count: int) -> str:
        return f"""
        为以下手机壁纸主题创建{count}个不同的图片生成提示词：
        {theme}
        
        要求：
        1. 每个提示词都要详细描述图片内容
        2. 包含构图、风格、色彩等要素
        3. 确保提示词之间有足够的变化
        4. 以JSON数组格式返回
        """
    
    def _parse_prompts_response(self, response: str) -> List[str]:
        """解析AI返回的提示词列表"""
        try:
            # TODO: 实现JSON解析逻辑
            return []
        except Exception as e:
            raise Exception(f"提示词解析失败: {str(e)}")
